@file:JvmMultifileClass
@file:JvmName("DBOperator")
package com.sunky.db.util

import com.sunky.db.greendao.CheckRecordDao
import com.sunky.db.model.CheckRecord
import org.greenrobot.greendao.AbstractDao
import org.greenrobot.greendao.query.WhereCondition

/**
 * 取第一个数
 */
fun <T : Any, K : Any> DBManager.getFirst(dao: AbstractDao<T, K>): T? {
    var list = dao.queryBuilder().limit(1).build().list()
    return if (list.size > 0) {
        list[0]
    } else {
        null
    }
}

/**
 * 保存唯一的数据
 */
fun <T : Any, K : Any> DBManager.saveJustOne(dao: AbstractDao<T, K>, model : T) {
    dao.deleteAll()
    dao.insert(model)
}

/**
 * 保存一条的数据
 */
fun <T : Any, K : Any> DBManager.saveOne(dao: AbstractDao<T, K>, model : T) {
    dao.insert(model)
}
/**
 * 更新一条的数据
 */
fun DBManager.updateRecord(dao: CheckRecordDao, model : CheckRecord) {
    var list = dao.queryBuilder().where(WhereCondition.StringCondition("_id = "+model.id)).list()
    if (list.size > 0){
        dao.update(model)
    }else {
        dao.insert(model)
    }
}


/**
 * 查询所有
 */
fun <T : Any, K : Any> DBManager.getAll(dao: AbstractDao<T, K>): List<T>? {
    return dao.queryBuilder().list()
}

/**
 * 查询列表
 */
fun <T : Any, K : Any> DBManager.getList(dao: AbstractDao<T, K>,cond : WhereCondition): List<T>? {
    return dao.queryBuilder().where(cond).list()
}

/**
 * 更新model
 */
fun <T : Any, K : Any> DBManager.updateModel(dao: AbstractDao<T, K>, model : T) {
    dao.update(model)
}

/**
 * 删除所有数据
 */
fun <T : Any, K : Any> DBManager.deleteAll(dao: AbstractDao<T, K>) {
    return dao.deleteAll()
}
/**
 * 插入所有数据
 */
fun <T : Any, K : Any> DBManager.addAll(dao: AbstractDao<T, K>, list : List<T>) {
    return dao.insertInTx(list)
}